interface Computer{
int computer(int n,int m);
}
class Add implements Computer{
@Override
public int computer(int n, int m) {
return n+m;
}
}
class sub implements Computer{
@Override
public int computer(int n, int m) {
return n-m;
}
}
class multiply implements Computer{
@Override
public int computer(int n, int m) {
return n*m;
}
}
class divide implements Computer{
@Override
public int computer(int n, int m) {
if(m!=0) {
return n/m;
}else {
System.out.println("分母不能为零");
return 0;
}
}
}
class UseCompute{
public void usecom(Computer com,int n,int m) {
System.out.println(com.computer(n, m));
}
}
public class test2 {
public static void main(String[] args) {
UseCompute useCompute=new UseCompute();
useCompute.usecom(new Add(), 10, 20);
useCompute.usecom(new sub(), 10, 20);
useCompute.usecom(new multiply(), 10, 20);
useCompute.usecom(new divide(), 10, 20);
useCompute.usecom(new divide(), 10, 0);
}
}
在UseCompute类中传入Computer接口的实例化对象,然后在主类中实例化UseCompute类,调用usecom()方法,分别传入 Add
sub multiply divide 类的匿名对象,这就相当于完成了向上转型,在usecom()方法中进行对computer()方法的调用,由于computer()方法被子类覆写过,调用的就是覆写后的方法,这样 usecom()方法,就可以分别完成加减乘除的功能。
在进行除法操作时要注意,传入的分母一定不能为空。